﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;


namespace CestodoBebe.Util
{
    /// <summary>
    /// Classe de acesso a dados
    /// </summary>
    public class AcessoDados : IDisposable
    {
        private MySqlConnection conn = null;

        private AcessoDados() { }
        
        /// <summary>
        /// Cria conexão com o banco
        /// </summary>
        /// <returns>Retorna uma connection aberta</returns>
        /// 
        
        protected MySqlConnection Conexao()
        {
            MySqlConnection conn  = new MySqlConnection(Configuracao.ConnectionString);

            try
            {
                // abre a conexão e a devolve ao chamador do método
                conn.Open();
            }
            catch (MySqlException sqle)
            {
                conn = null;
                throw new Exception("Ocorreu um erro de conexão : " + sqle);
            }

            return conn;
        }

        public void fecharConexao()
        {
            if (conn!=null)
                conn.Close();
        }

        public void Dispose()
        {
            conn.Close();
            conn.Dispose();
        }

        public bool ExecutarComando(List<MySqlParameter> parametros, string sql)
        {
            return true;
            //comando.Connection = Conexao();
            //return(comando.ExecuteNonQuery()) > 0;
        }

        public MySqlDataReader ObterLeitor(string procedure)
        {
            MySqlCommand comando = new MySqlCommand();
            comando.CommandType = CommandType.StoredProcedure;
            comando.CommandText = procedure;
            comando.Connection = conn;
            comando.Connection.Open();

            return comando.ExecuteReader();
        }

        public MySqlDataReader ObterLeitor(string procedure, List<MySqlParameter> parametros)
        {
            MySqlCommand comando = new MySqlCommand();
            comando.CommandType = CommandType.StoredProcedure;
            comando.CommandText = procedure;
            comando.Parameters.AddRange(parametros.ToArray());
            comando.Connection = conn;
            comando.Connection.Open();

            return comando.ExecuteReader();
        }

        //public void ExecutarComando(string procedure, List<SqlParameter> parametros)
        //{
        //    SqlCommand comando = new SqlCommand();
        //    comando.CommandType = CommandType.StoredProcedure;
        //    comando.CommandText = procedure;
        //    comando.Parameters.AddRange(parametros.ToArray());
        //    comando.Connection = m_conexao;
        //    comando.Connection.Open();

        //    comando.ExecuteNonQuery();
        //}
    }
}
